目錄
API 是一種軟體機制,透過執行以下操作來簡化開發:
在D15-HTTP 請求/回應格式這篇文章中有提到行政院即時新聞API規格,從這個API規格很清楚的可以解釋上述三點
欄位 | 值 |
---|---|
endpoint | https://opendata.ey.gov.tw/api/ExecutiveYuan/NewsEy |
傳輸方式 | GET |
編碼 | content-type: application/json; charset=utf-8 |
上傳參數規格
欄位 | 說明 |
---|---|
Keyword | 關鍵字 |
StartDate | 起始日期,格式:yyyy/mm/dd |
EndDate | 結束日,格式:yyyy/mm/dd |
MaxSize | 返回最大筆數(最大輸出筆數:1000筆) |
IsRemoveHtmlTag | 是否過濾Html Tag |
回傳欄位說明
欄位 | 說明 |
---|---|
標題 | 文字 |
內容 | 文字 |
上版日期 | 文字,格式:yyyy-mm-dd |
來源網址 | 文字,格式:URL |
Amazon API Gateway 是一種全受管的服務,可讓開發人員輕鬆地建立、發佈、維護、監控和保護任何規模的 API。API 可作為應用程式的「前門」,以便從後端服務存取資料、商業邏輯或功能。使用 API Gateway 時,可以建立 RESTful API 和 WebSocket API,以啟用即時雙向通訊應用程式。API Gateway 支援容器化、無伺服器工作負載和 Web 應用程式。
API Gateway 負責處理有關接受和處理多達數十萬個並行 API 呼叫的所有工作,包括流量管理、CORS(Cross Orgin Resource Sharing) 支援、授權和存取控制、調節、監控和 API 版本管理。API Gateway 沒有最低費用或啟動成本。使用者為 API 呼叫和資料傳輸量支付費用,而使用 API Gateway 分級定價模型,可在 API 用量擴展時減少成本。
下圖是 AWS 官網所提供的 API Gateway 運作方式,在圖的左手邊很明顯的可以看出 API Gateway 可以作為串流、移動裝置、物聯網甚至是企業內部應用的服務入口;在圖中顯示透過 API Gateway Cache 降低延遲, Amazon CloudWatch 來記錄所有的呼叫記錄;而圖右邊則是顯示 API Gateway 所能串接的服務,不僅是 AWS 所提供的服務(計算、資料庫、串流服務等)也可以是公司內部自建的應用服務。
圖 1. API Gateway 運作方式(source:AWS)
API Gateway主要提供兩類 API 呼叫:
早期一些 API,例如 SOAP 或 XML-RPC,對開發人員強加了嚴格的框架, REST API(也稱為 RESTful API 或 RESTful Web API)是符合 REST 架構風格設計原則的應用程式介面 (API) 。 REST API 提供了一種靈活、輕量級的方式來整合應用程式並連接微服務架構中的元件。電腦科學家 Roy Fielding 博士於 2000 年在博士論文中定義,REST 為開發人員提供了相對較高的靈活性、可擴展性和效率,基於這些原因,REST API 已成為連接微服務架構中的元件和應用程式的常用方法。
開發人員幾乎可以使用任何程式語言開發 REST API,並支援各種資料格式。唯一的要求是它們符合以下六個 REST 設計原則,也稱為架構限制。
端點類型(Endpoint Type)
API Gateway Endpoint Type 有分為三種,分別是:
端點類型(Endpoint type)
端點類型 | REST API | HTTP API |
---|---|---|
邊緣最佳化 | 是 | 否 |
區域性 | 是 | 是 |
私有 | 是 | 否 |
安全(Security)
API Gateway 提供多種方法來保護您免API受特定威脅的攻擊,例如惡意行為者或流量高峰。
安全性功能 | REST API | HTTP API |
---|---|---|
相互TLS認證 | 是 | 是 |
後端身分驗證的憑證 | 是 | 否 |
AWS WAF | 是 | 否 |
授權(Authorization)
API Gateway 支援多種機制來控制和管理您的API。
授權選項 | REST API | HTTP API |
---|---|---|
IAM | 是 | 是 |
資源政策 | 是 | 否 |
Amazon Cognito | 是 | 是1 |
具有 AWS Lambda 功能的自定義授權 | 是 | 是 |
JSON網絡令牌(JWT)2 | 否 | 是 |
1 可以將 Amazon Cognito 與 JWT 授權者(JWT authorizer)一起使用 | ||
2 可以在 REST APIs 中使用 Lambda 授權程式(Lambda authorizer)來驗證 JWTs |
API管理(API management)
選擇是否 REST APIs 需要API金鑰和每個用戶端速率限制等API管理功能。
功能 | REST API | HTTP API |
---|---|---|
自訂網域 | 是 | 是 |
API鑰匙 | 是 | 否 |
個別用戶端速率限制 | 是 | 否 |
個別用戶端使用量限制 | 是 | 否 |
整合(Integrations)
整合將 API Gateway 連接後端資源。
功能 | REST API | HTTP API |
---|---|---|
公用HTTP端點 | 是 | 是 |
AWS 服務 | 是 | 是 |
AWS Lambda 函數 | 是 | 是 |
與 Network Load Balancer 的私有整合 | 是 | 是 |
與 Application Load Balancer 的私有整合 | 否 | 是 |
私人整合 AWS Cloud Map | 否 | 是 |
模擬整合 | 是 | 否 |
在 Amazon API Gateway 中,建立一個稱 REST API 時,就是建立為一堆資源的集合。如下圖所示, getbiao 是一個 REST API,裡面包含了兩個資源:chufashu 與 postdb,而每個資源實體下可以有一或多個方法(GET),這些方法都是標準的 HTTP 協定所定義的方法,如 get,post,put,options 等,
圖 2. API Gateway - REST API 結構
而如同標準 Web API 一樣,API Gateway 的也包含了 request/response,只是基於整合後端 AWS 資源考量,API Gateway 的 REST API 方法分成了四個階段:
為了協助客戶瞭解開發者所設計的 API,也可以在 API 建立過程中或建立之後提供 API 文件。若要啟用此功能,請為支援的 API 新增 Documentation 資源;若要控制用戶端呼叫 API 的方式,可以在**授權者(Authorizers)選項請使用 IAM 許可、Lambda 授權者或 Amazon Cognito 使用者集區;要計算 API 使用情況,請設置使用計劃(Usage plans)**選項以限制API請求。如下圖所示。
圖 3. API Gateway - REST API 其他功能